[iOS 8] Today Extension で画像が表示されない時の解決法
画像が表示されない
Today Extension の実装中、Storyboard に配置した画像が表示されないといったことが起こりました。
画像はImages.xcassetsに格納してあります。Storyboard の Auto Layout の Constraints 設定にも問題ありません。画像は Containing App 側で正常に表示されているため、何らかの画像データ自体にも問題はない状態です。
原因を探る
App Extension を実行すると、以下の様なログが出力されていました。
2014-10-28 18:07:13.732 TodayExtension[12058:249072] Failed to inherit CoreMedia permissions from 11958: (null)<br> 2014-10-28 18:07:13.803 TodayExtension[12058:249029] Could not load the "dial" image referenced from a nib in the bundle with identifier "jp.xxx.xxx"
画像ファイルが読み込めないとのことですね。ここで、原因にたどり着きました。
Target Membership でチェックが入ってなかった
Images.xcassetsフォルダを選択し、Target Membershipを見てみると、見事に Today Extension のターゲットにチェックが入っていませんでした。
ということで、Today Extension の方にもチェックを入れました。
この状態で、再びビルド・実行すると、今度はエラーもなく無事表示されました。
Asset Catalog に慣れていなかった
長い間 Asset Catalog を用いずに、独自に作成した画像入りのフォルダをプロジェクトに追加する方法をとっていました。 この場合、ファイル追加時に Add to targets 欄で、どのターゲットに追加するかを指定できます。 このやり方に慣れていたため、今回の問題にはまってしまったようです。
同じトラブルに合われた方のお役に立てれば幸いです。